// 常用:
// function sum(x: number, y: number): number {
//   return x + y
// }

// let sum = function (x: number, y: number): number {
//   return x + y
// }
// let sum: (x: number, y: number) => number = function (
//   x: number,
//   y: number
// ): number {
//   return x + y
// }
// interface Isum {
//   (x: number, y: number): number
// }
// let sum: Isum = function (x: number, y: number): number {
//   return x + y
// }
// sum(1, 2)

// function buildName(firstName: string, lastName?: string) {
//   if (lastName) {
//     return firstName + ' ' + lastName
//   } else {
//     return firstName
//   }
// }
// let tomcat = buildName('Tom', 'Cat')
// let tom = buildName('Tom')

// function buildName(firstName: string = 'abc', lastName: string) {
//   if (lastName) {
//     return firstName + ' ' + lastName
//   } else {
//     return firstName
//   }
// }
// let tomcat = buildName('Tom', 'Cat')
// let tom = buildName(undefined,'Tom')

// function fn(a: number, b: number, ...args: any[]) {
//   //   console.log(a, b, args)
// }

// fn(1, 2, 3, 4, 5)

function reverse(x: number): number
function reverse(x: string): string
function reverse(x: number | string): number | string | void {
  if (typeof x === 'number') {
    return Number(x.toString().split('').reverse().join(''))
  } else if (typeof x === 'string') {
    return x.split('').reverse().join('')
  }
}
console.log(reverse(123))
console.log(reverse('123'))
